home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / igo / gosource / damecell.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  1.2 KB  |  75 lines

  1. #define DEBUG 0
  2. /* 
  3.     TOWNS囲碁棋譜記録プログラム
  4.                                           1993/07/25  久保田俊也
  5.  
  6.     93/07/25        banデ-タのダメのセルを操作する関数の集まり 
  7.                 
  8.  
  9. */
  10. #include <stdlib.h>
  11. #include "igo.h"
  12. #include "banx.h"
  13.  
  14. #define MAX_DAMECELLSIZE MAX_BANSIZE*MAX_BANSIZE*4
  15. static DAMECELL *damecell=NULL;
  16. static DAMECELL *free_p;
  17.  
  18. int damecell_init()
  19. {
  20. int i;
  21.  
  22.     if(damecell == NULL){
  23.         damecell = (DAMECELL *)my_malloc( sizeof(DAMECELL) * MAX_DAMECELLSIZE);
  24.         if( damecell == NULL){
  25.             return -1;
  26.         }
  27.     }
  28.     
  29.     for(i=0;i<MAX_DAMECELLSIZE-1;i++){
  30.         damecell[i].next = &damecell[i+1];
  31.         damecell[i].ichi  = FREE_CELL; /* free_cell の意味で使っている */
  32.     }
  33.     damecell[MAX_DAMECELLSIZE-1].next = NULL;
  34.     damecell[MAX_DAMECELLSIZE-1].ichi  = FREE_CELL; /* free_cell の意味で使っている */
  35.  
  36.     free_p = &damecell[0];
  37.     return 0;
  38.     
  39. }
  40.  
  41. int damecell_end()
  42. {
  43.  
  44.     if(damecell == NULL){
  45.         return -1;
  46.     }else{
  47.         my_free(damecell);
  48.         return 0;
  49.     }
  50. }
  51.  
  52. DAMECELL *damecell_get()
  53. {
  54. DAMECELL *wk_te;
  55.  
  56.     if(free_p == NULL){
  57.         return NULL;
  58.     }else{
  59.         wk_te = free_p;
  60.         free_p = free_p->next;
  61.         return wk_te;
  62.     }
  63.  
  64. }
  65.  
  66. int damecell_free(DAMECELL *p)
  67. {
  68.  
  69.     p->next = free_p;
  70.     p->ichi  = FREE_CELL;
  71.     free_p = p;
  72.     return 0;
  73. }
  74.  
  75.